modf関数は、指定された浮動小数点実数を整数と小数に変換した値を求めます。

#include <math.h>
double modf(double x, double *iptr);

xは浮動小数点実数の値を指定します。
*iptrは変換した整数部分の値を格納する変数のアドレスを指定します。

戻り値として、小数部分の値を返します。

modf関数は、引数xを整数部分と小数部分に分割しますが、この2つの値は共にxと同じ符号を持っています。また、小数部分は戻り値として返り、整数部分は iptrに格納されます。

プログラム 例

#include <stdio.h>
#include <math.h>

int main(void)
{
  int    loop_cnt;
  double x;
  double iptr;
  double f;

  for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) {
    printf('実数の値を入力してください ==> ');
    scanf('%lf', &x);

    f = modf(x, &iptr);
    printf('%f = %f + %f\n', x, f, iptr);
  }

  return 0;
}

例の実行結果

$ ./modf.exe
実数の値を入力してください ==> 1.23
1.230000 = 0.230000 + 1.000000
実数の値を入力してください ==> -1.23
-1.230000 = -0.230000 + -1.000000
実数の値を入力してください ==> 123.456
123.456000 = 0.456000 + 123.000000
実数の値を入力してください ==> 0.123
0.123000 = 0.123000 + 0.000000
実数の値を入力してください ==> -0.123
-0.123000 = -0.123000 + -0.000000
$